package org.openquark.cal_Cal_Samples_DirectedGraphLibrary;
import java.util.Map;
import java.util.WeakHashMap;
import org.openquark.cal.internal.runtime.lecc.RTCAF;
import org.openquark.cal.internal.runtime.lecc.RTExecutionContext;
import org.openquark.cal.internal.runtime.lecc.RTFullApp;
import org.openquark.cal.internal.runtime.lecc.RTFunction;
import org.openquark.cal.internal.runtime.lecc.RTPartialApp;
import org.openquark.cal.internal.runtime.lecc.RTResultFunction;
import org.openquark.cal.internal.runtime.lecc.RTValue;
import org.openquark.cal.runtime.CALExecutorException;
import org.openquark.cal_Cal_Collections_List.Output_List;
import org.openquark.cal_Cal_Core_Prelude.Compose;
import org.openquark.cal_Cal_Core_Prelude.Output_J_Object;
public final class Strongly_Connected_Components extends RTCAF {
/**
* Singleton instance of this class.
*/
private static final Strongly_Connected_Components $instance =
new Strongly_Connected_Components();
/*
* Mappings of execution context to CAF instances.
*/
/**
* Execution context -> instance map for stronglyConnectedComponents
*/
private static final Map $instancesMap = new WeakHashMap();
private Strongly_Connected_Components() {
}
public static final synchronized RTFunction make(RTExecutionContext $ec) {
RTFunction newInstance =
((RTFunction)(java.lang.Object)
Strongly_Connected_Components.$instancesMap.get($ec));
if (newInstance == null) {
newInstance =
(new RTFullApp.General._0(
Strongly_Connected_Components.$instance));
Strongly_Connected_Components.$instancesMap.put($ec, newInstance);
}
return newInstance;
}
public static final synchronized void resetCachedResults(RTExecutionContext $ec) {
Strongly_Connected_Components.$instancesMap.remove($ec);
}
public final int getArity() {
return 0;
}
public final java.lang.String getModuleName() {
return "Cal.Samples.DirectedGraphLibrary";
}
public final java.lang.String getUnqualifiedName() {
return "stronglyConnectedComponents";
}
public final java.lang.String getQualifiedName() {
return "Cal.Samples.DirectedGraphLibrary.stronglyConnectedComponents";
}
/**
* f
* This method implements the function logic of the CAL function Cal.Samples.DirectedGraphLibrary.stronglyConnectedComponents
*/
public final RTValue f(final RTResultFunction $rootNode, final RTExecutionContext $ec) throws CALExecutorException {
// Release the fields in the root node to open them to garbage collection
$rootNode.clearMembers();
// Top level supercombinator logic
return
new RTPartialApp._3._2(
Compose.$instance,
new RTFullApp.General._1._S(
Output_List.$instance,
new RTPartialApp._2._1(
org.openquark.cal_Cal_Core_Prelude.Output_List.$instance,
Output_J_Object.$instance)),
new RTPartialApp._2._1(
org.openquark.cal_Cal_Utilities_DirectedGraph.Strongly_Connected_Components.$instance,
_dict___Eq___Vertex.$instance));
}
}